-- Function: abaco_utiles.act_certificado_afip(character varying, timestamp without time zone, character varying, integer)

-- DROP FUNCTION abaco_utiles.act_certificado_afip(character varying, timestamp without time zone, character varying, integer);

CREATE OR REPLACE FUNCTION abaco_utiles.act_certificado_afip(character varying, character varying, integer)
  RETURNS boolean AS
$BODY$

DECLARE 
vempresa    alias for $1; 
vcuit       alias FOR $2;
vruta       alias FOR $3; 

vcadena   character varying;
vservidor character varying;

  
BEGIN
-- Esta función regraba el campo certificado en la tabla websrvxemp--
-- Para esto hay que hacer una copia del archivo .crt con el nombre 'certificado.txt'. La copia es para no editar el archivo.
-- El archivo 'certificado.txt' hay que copiarlo en la carpeta c:/abaco/gestion/afip, para los servidores locales.
-- Para los servidores remotos el archivo se subira a la carpeta del cliente, como se hace con las listas de precios

-- PARAMETROS--
-- el primer parámetro corresponde al código de la empresa donde se actualizará el certificado,
-- el segundo al cuit de la empresa para subirlo al servidor. Va cadena vacia en el caso de los servidores locales,
-- el tercero indica el tipo de servdor: 1 local, 2 hosting, 3 datacenter  
if trim(vcuit) = '' and vruta <> 1 then
   RAISE EXCEPTION 'Debe ingresar el cuit del cliente, separado por guiones'; 
end if;

if vruta not in (1, 2, 3) then
   RAISE EXCEPTION 'El servidor debe corresponder a los codigos 1, 2 o 3';
end if;


CREATE TABLE abaco_utiles.renglones
(
  renglon character varying(8000)
)
WITH (
  OIDS=TRUE
);
ALTER TABLE abaco_utiles.renglones
  OWNER TO abacouser;


if vruta = 1 then
   copy abaco_utiles.renglones from 'c:/abaco/gestion/afip/certificado.txt';
  else
    if vruta = 2 then
       vservidor:= '/var/www/html/implementacion_datos/clientes/'; -- Hosting
     else
       vservidor:= '/datacenter/var/www/html/implementacion_datos/clientes/'; -- Datacenter (fibercorp)
    end if;
    vcadena:= 'copy abaco_utiles.renglones from ''' || vservidor || vcuit || '/' || 'certificado.txt' || '''';
    EXECUTE vcadena; 
end if;

update websrvxemp set certificado =
 replace(ARRAY_TO_STRING(ARRAY
  (select * from abaco_utiles.renglones), ';'), ';', chr(10)) 
from abaco_utiles.renglones
where cod = 'wsfe' and codambemp = vempresa; 


RETURN true;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION abaco_utiles.act_certificado_afip(character varying, character varying, integer)
  OWNER TO abacouser;

-----------------------------------------------------------------------------------------------------

CREATE OR REPLACE FUNCTION abaco_utiles.act_vencimiento_certificado_afip(character varying, timestamp without time zone)
  RETURNS boolean AS
$BODY$

DECLARE 
vempresa    alias for $1; 
vfecha      alias for $2;
  
BEGIN
-- Esta función regraba el campo vencimiento en la tabla websrvxemp--

-- PARAMETROS--
-- El primer parámetro corresponde al código de la empresa donde se actualizará el vencimiento,
-- el segundo a la fecha de vencimiento del certificado


update websrvxemp set vencimiento = vfecha  
where cod = 'wsfe' and codambemp = vempresa; 

RETURN true;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION abaco_utiles.act_vencimiento_certificado_afip(character varying, timestamp without time zone)
  OWNER TO abacouser;
  
--
SELECT aaVersion('517.05','517.04');
--	
	
	


